﻿using FluentValidation.Attributes;
using SDF.Admin.Validators.Settings;
using SDF.Web.Framework;
using SDF.Web.Framework.Mvc;

namespace SDF.Admin.Models.Settings
{
    [Validator(typeof(RewardPointsSettingsValidator))]
    public partial class RewardPointsSettingsModel : BaseSDFModel
    {
        public int ActiveProjectScopeConfiguration { get; set; }


        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.Enabled")]
        public bool Enabled { get; set; }
        public bool Enabled_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.ExchangeRate")]
        public decimal ExchangeRate { get; set; }
        public bool ExchangeRate_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.MinimumRewardPointsToUse")]
        public int MinimumRewardPointsToUse { get; set; }
        public bool MinimumRewardPointsToUse_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PointsForRegistration")]
        public int PointsForRegistration { get; set; }
        public bool PointsForRegistration_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PointsForPurchases_Amount")]
        public decimal PointsForPurchases_Amount { get; set; }
        public int PointsForPurchases_Points { get; set; }
        public bool PointsForPurchases_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PointsForPurchases_Awarded")]
        public int PointsForPurchases_Awarded { get; set; }
        public bool PointsForPurchases_Awarded_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PointsForPurchases_Canceled")]
        public int PointsForPurchases_Canceled { get; set; }
        public bool PointsForPurchases_Canceled_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.DisplayHowMuchWillBeEarned")]
        public bool DisplayHowMuchWillBeEarned { get; set; }
        public bool DisplayHowMuchWillBeEarned_OverrideForProject { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PointsAccumulatedForAllProjects")]
        public bool PointsAccumulatedForAllProjects { get; set; }

        [SDFResourceDisplayName("Admin.Configuration.Settings.RewardPoints.PageSize")]
        public int PageSize { get; set; }
        public bool PageSize_OverrideForProject { get; set; }

        public string PrimaryProjectCurrencyCode { get; set; }
    }
}